package com.health.article.service.impl;

import java.util.List;
import com.health.common.utils.DateUtils;
import com.health.content.domain.ContentCategory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.health.article.mapper.ContentArticleMapper;
import com.health.article.domain.ContentArticle;
import com.health.article.service.IContentArticleService;

/**
 * 资讯管理Service业务层处理
 * 
 * @author moxxie
 * @date 2025-10-31
 */
@Service
public class ContentArticleServiceImpl implements IContentArticleService 
{
    @Autowired
    private ContentArticleMapper contentArticleMapper;

    /**
     * 查询资讯管理
     * 
     * @param articleId 资讯管理主键
     * @return 资讯管理
     */
    @Override
    public ContentArticle selectContentArticleByArticleId(Long articleId)
    {
        return contentArticleMapper.selectContentArticleByArticleId(articleId);
    }

    /**
     * 查询资讯管理列表
     * 
     * @param contentArticle 资讯管理
     * @return 资讯管理
     */
    @Override
    public List<ContentArticle> selectContentArticleList(ContentArticle contentArticle)
    {
        return contentArticleMapper.selectContentArticleList(contentArticle);
    }

    /**
     * 新增资讯管理
     * 
     * @param contentArticle 资讯管理
     * @return 结果
     */
    @Override
    public int insertContentArticle(ContentArticle contentArticle)
    {
        return contentArticleMapper.insertContentArticle(contentArticle);
    }

    /**
     * 修改资讯管理
     * 
     * @param contentArticle 资讯管理
     * @return 结果
     */
    @Override
    public int updateContentArticle(ContentArticle contentArticle)
    {
        contentArticle.setUpdateTime(DateUtils.getNowDate());
        return contentArticleMapper.updateContentArticle(contentArticle);
    }

    /**
     * 批量删除资讯管理
     * 
     * @param articleIds 需要删除的资讯管理主键
     * @return 结果
     */
    @Override
    public int deleteContentArticleByArticleIds(Long[] articleIds)
    {
        return contentArticleMapper.deleteContentArticleByArticleIds(articleIds);
    }

    /**
     * 删除资讯管理信息
     * 
     * @param articleId 资讯管理主键
     * @return 结果
     */
    @Override
    public int deleteContentArticleByArticleId(Long articleId)
    {
        return contentArticleMapper.deleteContentArticleByArticleId(articleId);
    }

    /**
     * 查询所有栏目（用于下拉框）
     *
     * @return 栏目列表
     */
    @Override
    public List<ContentCategory> selectAllCategories()
    {
        return contentArticleMapper.selectAllCategories();
    }

    /**
     * 切换置顶状态
     */
    @Override
    public int toggleTop(Long articleId)
    {
        ContentArticle article = contentArticleMapper.selectContentArticleByArticleId(articleId);
        if (article == null) {
            return 0;
        }
        // 切换置顶状态
        if ("1".equals(article.getIsTop())) {
            article.setIsTop("0");
        } else {
            article.setIsTop("1");
        }
        article.setUpdateTime(DateUtils.getNowDate());
        return contentArticleMapper.updateContentArticle(article);
    }

    /**
     * 切换发布状态
     */
    @Override
    public int toggleStatus(Long articleId)
    {
        ContentArticle article = contentArticleMapper.selectContentArticleByArticleId(articleId);
        if (article == null) {
            return 0;
        }
        // 状态切换逻辑
        String currentStatus = article.getStatus();
        String newStatus;
        switch (currentStatus) {
            case "0": // 待审核 -> 已发布
                newStatus = "1";
                break;
            case "1": // 已发布 -> 下架
                newStatus = "4";
                break;
            case "3": // 草稿 -> 待审核
                newStatus = "0";
                break;
            case "4": // 已下架 -> 待审核
                newStatus = "0";
                break;
            default:
                return 0;
        }
        article.setStatus(newStatus);
        article.setUpdateTime(DateUtils.getNowDate());
        return contentArticleMapper.updateContentArticle(article);
    }
}
